using System;
using System.Collections.Generic;
using System.Text;

namespace Fuzzy
{
    public abstract class FuzzyOperation
    {
        /// <summary>
        /// The intersection operation (T-norm).
        /// </summary>
        /// <param name="x">The first operand of the operation.</param>
        /// <param name="y">The second operand of the operation.</param>
        /// <returns>T(x,y)</returns>
        public abstract double TNorm(double x, double y);
        
        /// <summary>
        /// The union operation (S-norm).
        /// </summary>
        /// <param name="x">The first operand of the operation.</param>
        /// <param name="y">The second operand of the operation.</param>
        /// <returns>S(x,y)</returns>
        public abstract double SNorm(double x, double y);

        /// <summary>
        /// The complement operation.
        /// </summary>
        /// <param name="x">The operand of the operation.</param>
        /// <returns>C(x)</returns>
        public abstract double Complement(double x);
    }
}
